package chatModel;

import java.util.Observable;

/**
 * Classe décrivant l'état du GUI
 * Cette classe est observable pour faire des notifications lors des changement d'état
 */
public class ModeleEtatGUI extends Observable{

	private int etat;
	
        /**
         * Constructeur
         */
	public ModeleEtatGUI() {
		super();
	}
        
        /**
         * Donne l'état du GUI
         * @see chatModel.Choix Choix
         * @return entier donnant l'état du GUI
         */
	public int getEtat() {
		return etat;
	}

        /**
         * Change l'état du GUI de manière manuelle
         * @see chatModel.Choix Choix
         * @param etat valeur entière correspondant à un état
         */
	public void setEtat(int etat) {
		this.etat = etat;
	}
	
        /**
         * Passe le GUI a l'état connecté
         * Notifie que le GUI est dans l'état connecté
         * @see chatModel.Choix#etatConnected etatConnected
         * @see chatGUI.ChatGUI#update(java.util.Observable, java.lang.Object) update
         */
	public void connect(){
		this.etat=Choix.etatConnected;
		System.out.println("etat connecté");
		this.setChanged();
		this.notifyObservers(this);
	}
	
	/*public void disconnect(){
		this.etat=Choix.etatDisconnected;
		this.setChanged();
		this.notifyObservers(this);
	}*/
	
        /**
         * Passe le GUI a l'état de reception du fichier
         * Notifie que le GUI est en train de recevoir un fichier
         * @see chatGUI.ChatGUI#update(java.util.Observable, java.lang.Object) update
         * @see chatModel.Choix#etatRcvingFile etatRcvingFile
         */
	public void receivingFile(){
		this.etat=Choix.etatRcvingFile;
		this.setChanged();
		this.notifyObservers(this);
	}
	
        /**
         * Passe le GUI a l'état d'envoi d'un fichier
         * Notifie que le GUI est en train d'envoyer un fichier
         * @see chatGUI.ChatGUI#update(java.util.Observable, java.lang.Object) update
         * @see chatModel.Choix#etatSendingFile
         */
	public void sendingFile(){
		this.etat=Choix.etatSendingFile;
		this.setChanged();
		this.notifyObservers(this);
	}
}
